package com.example.managemyself.data.repository;

import androidx.lifecycle.LiveData;
import java.util.List;

import com.example.managemyself.data.model.Task;

/**
 * 任务仓库接口，定义任务数据操作方法
 */
public interface ITaskRepository {
    // 获取所有任务
    LiveData<List<Task>> getAllTasks();
    
    // 根据ID获取任务
    LiveData<Task> getTaskById(int id);
    
    // 根据状态获取任务
    LiveData<List<Task>> getTasksByStatus(String status);
    
    // 根据类型获取任务
    LiveData<List<Task>> getTasksByType(String type);
    
    // 根据重要程度获取任务
    LiveData<List<Task>> getTasksByImportance(int importance);
    
    // 根据紧急程度获取任务
    LiveData<List<Task>> getTasksByUrgency(String urgency);
    
    // 插入任务
    void insertTask(Task task);
    
    // 更新任务
    void updateTask(Task task);
    
    // 删除任务
    void deleteTask(Task task);
    
    // 根据ID删除任务
    void deleteTaskById(int id);
    
    // 根据标签获取任务
    LiveData<List<Task>> getTasksByTag(String tag);
    
    // 根据优先级获取任务
    LiveData<List<Task>> getTasksByPriority(String priority);
    
    // 获取指定日期完成的任务（同步方法）
    List<Task> getCompletedTasksByDateSync(java.util.Date date);
    
    // 获取指定日期完成的任务（异步方法）
    LiveData<List<Task>> getCompletedTasksByDate(String dateStr);
} 